Физическая артикуляция – это набор тел артикуляции, организованных в виде логического дерева, в котором каждое отношение родитель-потомок отражает взаимно ограниченное относительное движение.
Основная цель физических артикуляций — обеспечить реалистичное физическое поведение для неигровых промышленных приложений, которые включают суставыA Физический компонент, обеспечивающий динамическую связь между компонентами Rigidbody, обычно допускающий некоторую степень движения, например шарнир. Подробнее
См. в Словарь. Например, с ними намного проще, чем с обычными суставами, имитировать роботизированные руки и кинематические цепи.
Настройка артикуляции по сравнению с обычными суставами
В самом простом сценарии, чтобы связать два физических тела одним суставом, вы можете либо создать сочленение, либо использовать обычные суставы, как описано в следующей таблице.
Articulation setup | Setup with regular joint | |
---|---|---|
Hierarchy | • GameObject + Articulation Body • GameObject + Articulation Body |
• GameObject + Rigid Body • GameObject + Rigid Body + Joint |
Relationship | Игровые объекты имеют иерархические отношения (родитель-потомок). Примечание. Физический движок использует иерархию преобразования Unity для выражения отношения родитель-потомок. |
Игровые объекты не обязательно имеют иерархическую связь. Примечание. В более сложных сценариях можно свободно моделировать кинематические циклы. |
Physical bodies | Оба GameObjectsосновной объект в сценах Unity, который может представлять персонажей, реквизит, декорации, камеры, путевые точки и многое другое. Функциональность GameObject определяется прикрепленными к нему компонентами. Подробнее См. в Словарь есть компонент Articulation Body, который определяет свойства физического тела (среди другие). |
Оба игровых объекта имеют компонент RigidBody, который позволяет моделируемой гравитации и другим силам воздействовать на игровой объект. Подробнее См. в компоненте Словарь, определяющем свойства физического тела (среди прочего). |
Joint | Тело артикуляции дочернего игрового объекта содержит свойства соединения, где вы можете выбрать тип соединения. | Один из игровых объектов также имеет компонент Joint. Свойства соединения зависят от типа добавляемого компонента соединения. |
Однако общее результирующее поведение в обоих случаях неодинаково, особенно если распространить этот принцип на несколько физических тел и суставов.
Если вы попытаетесь использовать обычные шарниры для моделирования кинематических цепей, таких как тряпичная кукла, роботизированная рука или механизм с несколькими параллельными шарнирами, физический движокСистема, моделирующая аспекты физических систем, чтобы объекты могли правильно ускоряться и подвергаться воздействию столкновений, гравитации и других сил. Подробнее
См. в Словарь может столкнуться с неразрешимыми сценариями и оставить некоторые ограничения неудовлетворенными. Это может привести к заиканию и нереалистичному движению. Мало того, что соединения выглядели бы странно, их также было бы невозможно использовать для имитации реального устройства, что мешало бы усилиям по моделированию или созданию прототипов промышленных образцов.
Построение артикуляции в Unity
Чтобы создать физическую артикуляцию в Unity, необходимо добавить компонент Articulation Body к каждому игровому объекту, из которого состоит артикуляция. Каждый компонент Articulation Body можно настроить в одном месте:
Свойства физического тела соответствующего игрового объекта. По сути, его масса и то, как он реагирует на физическое окружение.
Тип и свойства соединения, которое связывает GameObject с его родительским GameObject (за исключением корня артикуляции).
В приведенном ниже примере показана простая физическая артикуляция, включающая 3 физических тела и 2 сустава:
Чтобы создать такую артикуляцию в Unity:
Создайте линейную иерархию из 3 игровых объектов.
Добавьте компонент Articulation Body к каждому из этих трех игровых объектов.
Настройте каждый компонент тела артикуляции (в соответствии с рисунком выше):
GameObject | Конфигурация компонентов корпуса артикуляции |
---|---|
A (root) | Вы можете определить свойства физического тела только для GameObject A. |
B | Вы можете определить: • Свойства физического тела для GameObject B. • Тип и свойства соединения с GameObject A. |
C | Вы можете определить: • Свойства физического тела для GameObject C. • Тип и свойства соединения с GameObject B. |
Примечание. По определению артикуляция может иметь только один корень и не может иметь кинематических петель. Если вам нужны кинематические циклы, используйте обычные шарниры.
Ограничение: если вы хотите построить очень длинные цепочки артикуляции, вы все равно должны знать, что Unity поддерживает максимальную глубину иерархии 64 игровых объекта.
Типы шарнирных соединений и степени свободы
Существует четыре типа шарнирных соединений, которые можно выбрать и настроить. через артикуляционное тело:
- Фиксированное соединениеТип соединения, полностью связанный, позволяющий удерживать два объекта вместе. Реализован как пружина, поэтому некоторое движение все еще может происходить. Подробнее
См. в Словарь: устанавливает жесткую, неразрывную и нерастяжимую ссылку. между телами. - Призматический шарнир: предотвращает все движения, кроме скольжения вдоль определенной оси.
- Поворотное соединение: позволяет вращаться вокруг определенной оси (например, шарнир).
- Сферический сустав: анатомический сустав, допускающий два поворота и один поворот.
Все заблокированные степени свободы в сочленении по своей конструкции не ломаются и не растягиваются. Для этого физический движок использует сокращенное пространство координат, в котором тела имеют координаты только относительно разблокированных осей движения.
Напротив, для обычных итерационных соединений физический движок обеспечивает максимальное пространство координат, что гарантирует соблюдение ограничений только в том случае, если решатель способен сходиться после набора итераций.
Демонстрация физической артикуляции
Познакомьтесь с демонстрационным проектом Unity по робототехнике, чтобы поэкспериментировать с манипулятором последовательного соединения. с шарнирными соединениями.